[INFO] cloning repository https://github.com/PeterJiV5/FortiTennis-Training
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/PeterJiV5/FortiTennis-Training" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FPeterJiV5%2FFortiTennis-Training", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FPeterJiV5%2FFortiTennis-Training'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 857ebec21e070f4dabffe5ac8fb497db137fb222
[INFO] checking PeterJiV5/FortiTennis-Training against master#c290daa1e5274a52e54a0f49e31bd70192abc606 for pr-133502-23
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FPeterJiV5%2FFortiTennis-Training" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/PeterJiV5/FortiTennis-Training
[INFO] removed 0 missing tests
[INFO] finished tweaking git repo https://github.com/PeterJiV5/FortiTennis-Training
[INFO] tweaked toml for git repo https://github.com/PeterJiV5/FortiTennis-Training written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/PeterJiV5/FortiTennis-Training on toolchain c290daa1e5274a52e54a0f49e31bd70192abc606
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c290daa1e5274a52e54a0f49e31bd70192abc606" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/PeterJiV5/FortiTennis-Training already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c290daa1e5274a52e54a0f49e31bd70192abc606" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded find-msvc-tools v0.1.8
[INFO] [stderr]   Downloaded zmij v1.0.16
[INFO] [stderr]   Downloaded fallible-streaming-iterator v0.1.9
[INFO] [stderr]   Downloaded unicode-truncate v1.1.0
[INFO] [stderr]   Downloaded strum v0.26.3
[INFO] [stderr]   Downloaded lru v0.12.5
[INFO] [stderr]   Downloaded clap_lex v0.7.7
[INFO] [stderr]   Downloaded cc v1.2.54
[INFO] [stderr]   Downloaded stability v0.2.1
[INFO] [stderr]   Downloaded fallible-iterator v0.3.0
[INFO] [stderr]   Downloaded strum_macros v0.26.4
[INFO] [stderr]   Downloaded castaway v0.2.4
[INFO] [stderr]   Downloaded hashlink v0.9.1
[INFO] [stderr]   Downloaded cassowary v0.3.0
[INFO] [stderr]   Downloaded compact_str v0.7.1
[INFO] [stderr]   Downloaded clap v4.5.54
[INFO] [stderr]   Downloaded zerocopy-derive v0.8.33
[INFO] [stderr]   Downloaded mio v0.8.11
[INFO] [stderr]   Downloaded crossterm v0.27.0
[INFO] [stderr]   Downloaded rusqlite v0.31.0
[INFO] [stderr]   Downloaded clap_builder v4.5.54
[INFO] [stderr]   Downloaded unicode-width v0.1.14
[INFO] [stderr]   Downloaded zerocopy v0.8.33
[INFO] [stderr]   Downloaded ratatui v0.26.3
[INFO] [stderr]   Downloaded libsqlite3-sys v0.28.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] f744f9ad60e43b1367bf7111b08eca6f11d5bad9db167b672274e843d9a49fa4
[INFO] running `Command { std: "docker" "start" "f744f9ad60e43b1367bf7111b08eca6f11d5bad9db167b672274e843d9a49fa4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f744f9ad60e43b1367bf7111b08eca6f11d5bad9db167b672274e843d9a49fa4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "f744f9ad60e43b1367bf7111b08eca6f11d5bad9db167b672274e843d9a49fa4" "/opt/rustwide/cargo-home/bin/cargo" "+c290daa1e5274a52e54a0f49e31bd70192abc606" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f744f9ad60e43b1367bf7111b08eca6f11d5bad9db167b672274e843d9a49fa4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "f744f9ad60e43b1367bf7111b08eca6f11d5bad9db167b672274e843d9a49fa4" "/opt/rustwide/cargo-home/bin/cargo" "+c290daa1e5274a52e54a0f49e31bd70192abc606" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling unicode-ident v1.0.22
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]    Compiling libc v0.2.180
[INFO] [stderr]     Checking cfg-if v1.0.4
[INFO] [stderr]    Compiling rustversion v1.0.22
[INFO] [stderr]     Checking log v0.4.29
[INFO] [stderr]    Compiling zerocopy v0.8.33
[INFO] [stderr]    Compiling version_check v0.9.5
[INFO] [stderr]    Compiling shlex v1.3.0
[INFO] [stderr]     Checking bitflags v2.10.0
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling find-msvc-tools v0.1.8
[INFO] [stderr]    Compiling vcpkg v0.2.15
[INFO] [stderr]     Checking utf8parse v0.2.2
[INFO] [stderr]    Compiling cc v1.2.54
[INFO] [stderr]    Compiling pkg-config v0.3.32
[INFO] [stderr]     Checking lock_api v0.4.14
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking anstyle-parse v0.2.7
[INFO] [stderr]     Checking tracing-core v0.1.36
[INFO] [stderr]    Compiling paste v1.0.15
[INFO] [stderr]     Checking foldhash v0.1.5
[INFO] [stderr]    Compiling zmij v1.0.16
[INFO] [stderr]     Checking itoa v1.0.17
[INFO] [stderr]     Checking anstyle-query v1.1.5
[INFO] [stderr]     Checking allocator-api2 v0.2.21
[INFO] [stderr]     Checking colorchoice v1.0.4
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]     Checking is_terminal_polyfill v1.70.2
[INFO] [stderr]     Checking anstyle v1.0.13
[INFO] [stderr]     Checking regex-syntax v0.8.8
[INFO] [stderr]     Checking itertools v0.13.0
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling anyhow v1.0.100
[INFO] [stderr]     Checking strsim v0.11.1
[INFO] [stderr]     Checking anstream v0.6.21
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]     Checking unicode-width v0.1.14
[INFO] [stderr]     Checking unicode-segmentation v1.12.0
[INFO] [stderr]     Checking ryu v1.0.22
[INFO] [stderr]     Checking static_assertions v1.1.0
[INFO] [stderr]     Checking clap_lex v0.7.7
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking clap_builder v4.5.54
[INFO] [stderr]     Checking hashbrown v0.15.5
[INFO] [stderr]     Checking itertools v0.12.1
[INFO] [stderr]     Checking thread_local v1.1.9
[INFO] [stderr]     Checking castaway v0.2.4
[INFO] [stderr]     Checking fallible-streaming-iterator v0.1.9
[INFO] [stderr]     Checking cassowary v0.3.0
[INFO] [stderr]     Checking compact_str v0.7.1
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]     Checking iana-time-zone v0.1.64
[INFO] [stderr]     Checking fallible-iterator v0.3.0
[INFO] [stderr]     Checking memchr v2.7.6
[INFO] [stderr]     Checking nu-ansi-term v0.50.3
[INFO] [stderr]     Checking lru v0.12.5
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]     Checking unicode-truncate v1.1.0
[INFO] [stderr]     Checking errno v0.3.14
[INFO] [stderr]     Checking mio v0.8.11
[INFO] [stderr]     Checking signal-hook-registry v1.4.8
[INFO] [stderr]     Checking regex-automata v0.4.13
[INFO] [stderr]    Compiling libsqlite3-sys v0.28.0
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking signal-hook-mio v0.2.5
[INFO] [stderr]     Checking crossterm v0.27.0
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]     Checking hashlink v0.9.1
[INFO] [stderr]     Checking tempfile v3.24.0
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling clap_derive v4.5.49
[INFO] [stderr]    Compiling stability v0.2.1
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking tracing-subscriber v0.3.22
[INFO] [stderr]     Checking clap v4.5.54
[INFO] [stderr]     Checking strum v0.26.3
[INFO] [stderr]     Checking ratatui v0.26.3
[INFO] [stderr]     Checking chrono v0.4.43
[INFO] [stderr]     Checking rusqlite v0.31.0
[INFO] [stderr]     Checking tui_coach v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `crate::ui::text_editor::TextEditor`
[INFO] [stdout]   --> src/ui/app_ui.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::ui::text_editor::TextEditor;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ui::help::HelpScreen`
[INFO] [stdout]   --> src/ui/app_ui.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use crate::ui::help::HelpScreen;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ui::text_editor::TextEditor`
[INFO] [stdout]   --> src/ui/app_ui.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::ui::text_editor::TextEditor;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ui::help::HelpScreen`
[INFO] [stdout]   --> src/ui/app_ui.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use crate::ui::help::HelpScreen;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]   --> src/ui/app_ui.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::str::FromStr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]   --> src/ui/app_ui.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::str::FromStr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/ui/app_ui.rs:1201:13
[INFO] [stdout]      |
[INFO] [stdout] 1201 |         let mut form_lines = vec![
[INFO] [stdout]      |             ----^^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/ui/app_ui.rs:1201:13
[INFO] [stdout]      |
[INFO] [stdout] 1201 |         let mut form_lines = vec![
[INFO] [stdout]      |             ----^^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::training_template_repo::TrainingTemplateRepository`
[INFO] [stdout]   --> src/db/repositories/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use self::training_template_repo::TrainingTemplateRepository;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::session_training_link_repo::SessionTrainingLinkRepository`
[INFO] [stdout]   --> src/db/repositories/mod.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use self::session_training_link_repo::SessionTrainingLinkRepository;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ui::text_editor::TextEditor`
[INFO] [stdout]   --> src/ui/app_ui.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::ui::text_editor::TextEditor;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ui::help::HelpScreen`
[INFO] [stdout]   --> src/ui/app_ui.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use crate::ui::help::HelpScreen;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `navigation::Screen`
[INFO] [stdout]   --> src/ui/mod.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use navigation::Screen;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `session_filter::SessionFilter`
[INFO] [stdout]   --> src/ui/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use session_filter::SessionFilter;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `session_form::SessionForm`
[INFO] [stdout]   --> src/ui/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use session_form::SessionForm;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `session_edit_form::SessionEditForm`
[INFO] [stdout]   --> src/ui/mod.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use session_edit_form::SessionEditForm;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `text_editor::TextEditor`
[INFO] [stdout]   --> src/ui/mod.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use text_editor::TextEditor;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `help::HelpScreen`
[INFO] [stdout]   --> src/ui/mod.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use help::HelpScreen;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `training_content_form::TrainingContentForm`
[INFO] [stdout]   --> src/ui/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use training_content_form::TrainingContentForm;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::training_template_repo::TrainingTemplateRepository`
[INFO] [stdout]   --> src/db/repositories/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use self::training_template_repo::TrainingTemplateRepository;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::session_training_link_repo::SessionTrainingLinkRepository`
[INFO] [stdout]   --> src/db/repositories/mod.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use self::session_training_link_repo::SessionTrainingLinkRepository;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ui::text_editor::TextEditor`
[INFO] [stdout]   --> src/ui/app_ui.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::ui::text_editor::TextEditor;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ui::help::HelpScreen`
[INFO] [stdout]   --> src/ui/app_ui.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use crate::ui::help::HelpScreen;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `navigation::Screen`
[INFO] [stdout]   --> src/ui/mod.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use navigation::Screen;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `session_filter::SessionFilter`
[INFO] [stdout]   --> src/ui/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use session_filter::SessionFilter;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `session_form::SessionForm`
[INFO] [stdout]   --> src/ui/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use session_form::SessionForm;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `session_edit_form::SessionEditForm`
[INFO] [stdout]   --> src/ui/mod.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use session_edit_form::SessionEditForm;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `text_editor::TextEditor`
[INFO] [stdout]   --> src/ui/mod.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use text_editor::TextEditor;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `help::HelpScreen`
[INFO] [stdout]   --> src/ui/mod.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use help::HelpScreen;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `training_content_form::TrainingContentForm`
[INFO] [stdout]   --> src/ui/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use training_content_form::TrainingContentForm;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]   --> src/ui/app_ui.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::str::FromStr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]   --> src/ui/app_ui.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::str::FromStr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/ui/app_ui.rs:1201:13
[INFO] [stdout]      |
[INFO] [stdout] 1201 |         let mut form_lines = vec![
[INFO] [stdout]      |             ----^^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `username` is never used
[INFO] [stdout]   --> src/auth/user.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl UserContext {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 14 |     pub fn username(&self) -> &str {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `find_by_id` is never used
[INFO] [stdout]   --> src/db/repositories/session_repo.rs:78:12
[INFO] [stdout]    |
[INFO] [stdout]  8 | impl SessionRepository {
[INFO] [stdout]    | ---------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub fn find_by_id(conn: &Connection, id: i64) -> Result<Option<Session>> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `is_subscribed`, `find_by_session`, and `delete` are never used
[INFO] [stdout]   --> src/db/repositories/subscription_repo.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout]  7 | impl SubscriptionRepository {
[INFO] [stdout]    | --------------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub fn is_subscribed(conn: &Connection, user_id: i64, session_id: i64) -> Result<bool> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     pub fn find_by_session(conn: &Connection, session_id: i64) -> Result<Vec<Subscription>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 97 |     pub fn delete(conn: &Connection, subscription_id: i64) -> Result<()> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `find_by_id` and `delete_by_session` are never used
[INFO] [stdout]    --> src/db/repositories/training_content_repo.rs:27:12
[INFO] [stdout]     |
[INFO] [stdout]   8 | impl TrainingContentRepository {
[INFO] [stdout]     | ------------------------------ associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  27 |     pub fn find_by_id(conn: &Connection, id: i64) -> Result<Option<TrainingContent>> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn delete_by_session(conn: &Connection, session_id: i64) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TrainingTemplateRepository` is never constructed
[INFO] [stdout]  --> src/db/repositories/training_template_repo.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct TrainingTemplateRepository;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> src/db/repositories/training_template_repo.rs:8:12
[INFO] [stdout]     |
[INFO] [stdout]   7 | impl TrainingTemplateRepository {
[INFO] [stdout]     | ------------------------------- associated functions in this implementation
[INFO] [stdout]   8 |     pub fn create(conn: &Connection, template: &TrainingTemplate, created_by: i64) -> Result<i64> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  28 |     pub fn get_by_id(conn: &Connection, id: i64) -> Result<TrainingTemplate> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  54 |     pub fn list_all(conn: &Connection) -> Result<Vec<TrainingTemplate>> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub fn list_by_coach(conn: &Connection, coach_id: i64) -> Result<Vec<TrainingTemplate>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn update(conn: &Connection, template: &TrainingTemplate, edited_by: i64) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn delete(conn: &Connection, id: i64) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn get_audit_info(conn: &Connection, template_id: i64) -> Result<TemplateAuditInfo> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub fn get_usage_count(conn: &Connection, template_id: i64) -> Result<i64> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SessionTrainingLinkRepository` is never constructed
[INFO] [stdout]  --> src/db/repositories/session_training_link_repo.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct SessionTrainingLinkRepository;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> src/db/repositories/session_training_link_repo.rs:8:12
[INFO] [stdout]     |
[INFO] [stdout]   7 | impl SessionTrainingLinkRepository {
[INFO] [stdout]     | ---------------------------------- associated functions in this implementation
[INFO] [stdout]   8 |     pub fn add_to_session(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  23 |     pub fn add_to_session_with_notes(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  39 |     pub fn get_for_session(conn: &Connection, session_id: i64) -> Result<Vec<SessionTrainingLink>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub fn get_for_session_with_templates(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn remove_from_session(conn: &Connection, session_id: i64, template_id: i64) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn update_custom_notes(conn: &Connection, link_id: i64, notes: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn reorder_in_session(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_str` is never used
[INFO] [stdout]   --> src/models/session.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 67 | impl SubscriptionStatus {
[INFO] [stdout]    | ----------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn as_str(&self) -> &str {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `subscription_id` is never used
[INFO] [stdout]   --> src/models/session_with_subscription.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl SessionWithSubscription {
[INFO] [stdout]    | ---------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn subscription_id(&self) -> Option<i64> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `username`, `goals`, `created_at`, and `updated_at` are never read
[INFO] [stdout]   --> src/models/user.rs:56:9
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct User {
[INFO] [stdout]    |            ---- fields in this struct
[INFO] [stdout] 55 |     pub id: i64,
[INFO] [stdout] 56 |     pub username: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub goals: Option<String>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 61 |     pub created_at: DateTime<Utc>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 62 |     pub updated_at: DateTime<Utc>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `User` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TrainingTemplate` is never constructed
[INFO] [stdout]  --> src/models/training_template.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct TrainingTemplate {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TemplateAuditInfo` is never constructed
[INFO] [stdout]   --> src/models/training_template.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct TemplateAuditInfo {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SessionTrainingLink` is never constructed
[INFO] [stdout]   --> src/models/training_template.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct SessionTrainingLink {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SessionTrainingLinkWithTemplate` is never constructed
[INFO] [stdout]   --> src/models/training_template.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct SessionTrainingLinkWithTemplate {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `delete_confirmation` and `training_content_selected_index` are never read
[INFO] [stdout]   --> src/ui/app_ui.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct App {
[INFO] [stdout]    |            --- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub delete_confirmation: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub training_content_selected_index: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `TrainingContentEdit` and `TrainingContentDelete` are never constructed
[INFO] [stdout]   --> src/ui/navigation.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum Screen {
[INFO] [stdout]    |          ------ variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 12 |     TrainingContentEdit(i64),  // content_id
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 13 |     TrainingContentDelete(i64),// content_id
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Screen` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `get_menu_items` is never used
[INFO] [stdout]   --> src/ui/navigation.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl Screen {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 18 |     /// Get available menu items based on user role
[INFO] [stdout] 19 |     pub fn get_menu_items(user_context: &UserContext) -> Vec<(&'static str, Screen)> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TextEditor` is never constructed
[INFO] [stdout]  --> src/ui/text_editor.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct TextEditor {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/ui/text_editor.rs:10:12
[INFO] [stdout]     |
[INFO] [stdout]   9 | impl TextEditor {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  10 |     pub fn new(content: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  18 |     pub fn content(&self) -> &str {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  22 |     pub fn is_insert_mode(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  26 |     pub fn toggle_mode(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  31 |     pub fn insert_char(&mut self, c: char) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  42 |     pub fn backspace(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub fn move_left(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn move_right(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub fn move_to_start(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  69 |     pub fn move_to_end(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  74 |     pub fn delete_char(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub fn delete_to_end(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn delete_all(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn cursor_pos(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub fn set_content(&mut self, content: String) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn clear(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `get_commands` is never used
[INFO] [stdout]  --> src/ui/help.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | impl HelpScreen {
[INFO] [stdout]   | --------------- associated function in this implementation
[INFO] [stdout] 8 |     /// Get all available commands for the current screen
[INFO] [stdout] 9 |     pub fn get_commands(screen: &Screen, user_context: &UserContext) -> Vec<(&'static str, &'static str)> {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `clear` is never used
[INFO] [stdout]    --> src/ui/training_content_form.rs:137:12
[INFO] [stdout]     |
[INFO] [stdout]  20 | impl TrainingContentForm {
[INFO] [stdout]     | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn clear(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `NotFound`, `Unauthorized`, `Validation`, and `Other` are never constructed
[INFO] [stdout]   --> src/utils/error.rs:7:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum AppError {
[INFO] [stdout]    |          -------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout]  7 |     NotFound(String),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]  8 |     Unauthorized(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]  9 |     Validation(String),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 10 |     Other(String),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AppError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/ui/app_ui.rs:1201:13
[INFO] [stdout]      |
[INFO] [stdout] 1201 |         let mut form_lines = vec![
[INFO] [stdout]      |             ----^^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `username` is never used
[INFO] [stdout]   --> src/auth/user.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl UserContext {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 14 |     pub fn username(&self) -> &str {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `find_by_id` is never used
[INFO] [stdout]   --> src/db/repositories/session_repo.rs:78:12
[INFO] [stdout]    |
[INFO] [stdout]  8 | impl SessionRepository {
[INFO] [stdout]    | ---------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub fn find_by_id(conn: &Connection, id: i64) -> Result<Option<Session>> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `is_subscribed`, `find_by_session`, and `delete` are never used
[INFO] [stdout]   --> src/db/repositories/subscription_repo.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout]  7 | impl SubscriptionRepository {
[INFO] [stdout]    | --------------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub fn is_subscribed(conn: &Connection, user_id: i64, session_id: i64) -> Result<bool> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     pub fn find_by_session(conn: &Connection, session_id: i64) -> Result<Vec<Subscription>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 97 |     pub fn delete(conn: &Connection, subscription_id: i64) -> Result<()> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TrainingTemplateRepository` is never constructed
[INFO] [stdout]  --> src/db/repositories/training_template_repo.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct TrainingTemplateRepository;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> src/db/repositories/training_template_repo.rs:8:12
[INFO] [stdout]     |
[INFO] [stdout]   7 | impl TrainingTemplateRepository {
[INFO] [stdout]     | ------------------------------- associated functions in this implementation
[INFO] [stdout]   8 |     pub fn create(conn: &Connection, template: &TrainingTemplate, created_by: i64) -> Result<i64> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  28 |     pub fn get_by_id(conn: &Connection, id: i64) -> Result<TrainingTemplate> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  54 |     pub fn list_all(conn: &Connection) -> Result<Vec<TrainingTemplate>> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub fn list_by_coach(conn: &Connection, coach_id: i64) -> Result<Vec<TrainingTemplate>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn update(conn: &Connection, template: &TrainingTemplate, edited_by: i64) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn delete(conn: &Connection, id: i64) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn get_audit_info(conn: &Connection, template_id: i64) -> Result<TemplateAuditInfo> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub fn get_usage_count(conn: &Connection, template_id: i64) -> Result<i64> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SessionTrainingLinkRepository` is never constructed
[INFO] [stdout]  --> src/db/repositories/session_training_link_repo.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct SessionTrainingLinkRepository;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> src/db/repositories/session_training_link_repo.rs:8:12
[INFO] [stdout]     |
[INFO] [stdout]   7 | impl SessionTrainingLinkRepository {
[INFO] [stdout]     | ---------------------------------- associated functions in this implementation
[INFO] [stdout]   8 |     pub fn add_to_session(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  23 |     pub fn add_to_session_with_notes(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  39 |     pub fn get_for_session(conn: &Connection, session_id: i64) -> Result<Vec<SessionTrainingLink>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub fn get_for_session_with_templates(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn remove_from_session(conn: &Connection, session_id: i64, template_id: i64) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn update_custom_notes(conn: &Connection, link_id: i64, notes: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn reorder_in_session(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_str` is never used
[INFO] [stdout]   --> src/models/session.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 67 | impl SubscriptionStatus {
[INFO] [stdout]    | ----------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn as_str(&self) -> &str {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `subscription_id` is never used
[INFO] [stdout]   --> src/models/session_with_subscription.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl SessionWithSubscription {
[INFO] [stdout]    | ---------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn subscription_id(&self) -> Option<i64> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `username`, `goals`, `created_at`, and `updated_at` are never read
[INFO] [stdout]   --> src/models/user.rs:56:9
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct User {
[INFO] [stdout]    |            ---- fields in this struct
[INFO] [stdout] 55 |     pub id: i64,
[INFO] [stdout] 56 |     pub username: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub goals: Option<String>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 61 |     pub created_at: DateTime<Utc>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 62 |     pub updated_at: DateTime<Utc>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `User` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TrainingTemplate` is never constructed
[INFO] [stdout]  --> src/models/training_template.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct TrainingTemplate {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TemplateAuditInfo` is never constructed
[INFO] [stdout]   --> src/models/training_template.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct TemplateAuditInfo {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SessionTrainingLink` is never constructed
[INFO] [stdout]   --> src/models/training_template.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct SessionTrainingLink {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SessionTrainingLinkWithTemplate` is never constructed
[INFO] [stdout]   --> src/models/training_template.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct SessionTrainingLinkWithTemplate {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `delete_confirmation` and `training_content_selected_index` are never read
[INFO] [stdout]   --> src/ui/app_ui.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct App {
[INFO] [stdout]    |            --- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub delete_confirmation: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub training_content_selected_index: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `TrainingContentEdit` and `TrainingContentDelete` are never constructed
[INFO] [stdout]   --> src/ui/navigation.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum Screen {
[INFO] [stdout]    |          ------ variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 12 |     TrainingContentEdit(i64),  // content_id
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 13 |     TrainingContentDelete(i64),// content_id
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Screen` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `get_menu_items` is never used
[INFO] [stdout]   --> src/ui/navigation.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl Screen {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 18 |     /// Get available menu items based on user role
[INFO] [stdout] 19 |     pub fn get_menu_items(user_context: &UserContext) -> Vec<(&'static str, Screen)> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TextEditor` is never constructed
[INFO] [stdout]  --> src/ui/text_editor.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct TextEditor {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/ui/text_editor.rs:10:12
[INFO] [stdout]     |
[INFO] [stdout]   9 | impl TextEditor {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  10 |     pub fn new(content: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  18 |     pub fn content(&self) -> &str {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  22 |     pub fn is_insert_mode(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  26 |     pub fn toggle_mode(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  31 |     pub fn insert_char(&mut self, c: char) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  42 |     pub fn backspace(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub fn move_left(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn move_right(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub fn move_to_start(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  69 |     pub fn move_to_end(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  74 |     pub fn delete_char(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub fn delete_to_end(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn delete_all(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn cursor_pos(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub fn set_content(&mut self, content: String) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn clear(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `get_commands` is never used
[INFO] [stdout]  --> src/ui/help.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | impl HelpScreen {
[INFO] [stdout]   | --------------- associated function in this implementation
[INFO] [stdout] 8 |     /// Get all available commands for the current screen
[INFO] [stdout] 9 |     pub fn get_commands(screen: &Screen, user_context: &UserContext) -> Vec<(&'static str, &'static str)> {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `clear` is never used
[INFO] [stdout]    --> src/ui/training_content_form.rs:137:12
[INFO] [stdout]     |
[INFO] [stdout]  20 | impl TrainingContentForm {
[INFO] [stdout]     | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn clear(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `NotFound`, `Unauthorized`, `Validation`, and `Other` are never constructed
[INFO] [stdout]   --> src/utils/error.rs:7:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum AppError {
[INFO] [stdout]    |          -------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout]  7 |     NotFound(String),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]  8 |     Unauthorized(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]  9 |     Validation(String),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 10 |     Other(String),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AppError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 36.98s
[INFO] running `Command { std: "docker" "inspect" "f744f9ad60e43b1367bf7111b08eca6f11d5bad9db167b672274e843d9a49fa4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f744f9ad60e43b1367bf7111b08eca6f11d5bad9db167b672274e843d9a49fa4", kill_on_drop: false }`
[INFO] [stdout] f744f9ad60e43b1367bf7111b08eca6f11d5bad9db167b672274e843d9a49fa4
